home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / Oberon⁄F™ 1.1 / Dev / Rsrc / New / Models5 (.txt) < prev    next >
Encoding:
Oberon Document  |  1995-08-09  |  5.2 KB  |  165 lines  |  [oODC/obnF]

  1. Documents.StdDocumentDesc
  2. Documents.DocumentDesc
  3. Containers.ViewDesc
  4. Views.ViewDesc
  5. Stores.StoreDesc
  6. Documents.ModelDesc
  7. Containers.ModelDesc
  8. Models.ModelDesc
  9. Stores.ElemDesc
  10. TextViews.StdViewDesc
  11. TextViews.ViewDesc
  12. TextModels.StdModelDesc
  13. TextModels.ModelDesc
  14. TextModels.AttributesDesc
  15. Helvetica
  16. Helvetica
  17. Helvetica
  18. StdStamps.StdViewDesc
  19. Helvetica
  20. Helvetica
  21. Helvetica
  22. MODULE NewModels;
  23.     IMPORT Domains, Stores, Models;
  24.     CONST
  25.         minVersion = 0; maxVersion = 0;
  26.     TYPE
  27.         Model* = POINTER TO ModelDesc;
  28.         ModelDesc* = RECORD (Models.ModelDesc) END;
  29.         Directory* = POINTER TO DirectoryDesc;
  30.         DirectoryDesc* = RECORD END;
  31.         UpdateMsg* = RECORD (Models.UpdateMsg)
  32.             (* message fields *)
  33.         END;
  34.         StdModel = POINTER TO RECORD (ModelDesc)
  35.             (* model fields *)
  36.         END;
  37.         StdDirectory = POINTER TO RECORD (DirectoryDesc) END;
  38.         Op = POINTER TO RECORD (Domains.OperationDesc)
  39.             model: StdModel;
  40.             (* model-operation fields *)
  41.         END;
  42.     VAR dir-, stdDir-: Directory;
  43.     (** Model **)
  44.     PROCEDURE (m: Model) Internalize* (VAR rd: Stores.Reader);
  45.         VAR version: SHORTINT;
  46.     BEGIN
  47.         m.Internalize^(rd);
  48.         IF ~rd.cancelled THEN
  49.             rd.ReadVersion(minVersion, maxVersion, version)
  50.         END
  51.     END Internalize;
  52.     PROCEDURE (m: Model) Externalize* (VAR wr: Stores.Writer);
  53.     BEGIN
  54.         m.Externalize^(wr);
  55.         wr.WriteVersion(maxVersion)
  56.     END Externalize;
  57.     (** Directory **)
  58.     PROCEDURE (d: Directory) New* (): Model;
  59.     BEGIN
  60.         HALT(127)
  61.     END New;
  62.     (* Op *)
  63.     PROCEDURE (op: Op) Do;
  64.         VAR msg: UpdateMsg;
  65.     BEGIN
  66.         (* perform model operation and set up the fields of the update message accordingly *)
  67.         Models.Broadcast(op.model, msg)    (* update all views on this model *)
  68.     END Do;
  69.     PROCEDURE NewOp (model: Model (* additional parameters *) ): Op;
  70.         VAR op: Op;
  71.     BEGIN
  72.         ASSERT(model # NIL, 20);
  73.         NEW(op);
  74.         (* set up operation parameters *)
  75.         RETURN op
  76.     END NewOp;
  77.     (* StdModel *)
  78.     PROCEDURE (m: StdModel) Internalize (VAR rd: Stores.Reader);
  79.         VAR version: SHORTINT;
  80.     BEGIN
  81.         (*ASSERT(m is not yet initialized, 20);*)
  82.         m.Internalize^(rd);
  83.         IF ~rd.cancelled THEN
  84.             rd.ReadVersion(minVersion, maxVersion, version);
  85.             IF ~rd.cancelled THEN
  86.                 (* read model fields *)
  87.             END
  88.         END
  89.     END Internalize;
  90.     PROCEDURE (m: StdModel) Externalize (VAR wr: Stores.Writer);
  91.     BEGIN
  92.         (*ASSERT(m is already initialized, 20);*)
  93.         m.Externalize^(wr);
  94.         wr.WriteVersion(maxVersion);
  95.         (* write model fields *)
  96.     END Externalize;
  97.     PROCEDURE (m: StdModel) InitFrom (source: Models.Model);
  98.     BEGIN
  99.         (*ASSERT(m is not yet initialized, 20);*)
  100.         ASSERT(source # NIL, 21);
  101.         (*ASSERT(source is already initialized, 22);*)
  102.         (* set up empty model *)
  103.     END InitFrom;
  104.     PROCEDURE (m: StdModel) CopyAllFrom (source: Models.Model);
  105.     BEGIN
  106.         (*ASSERT(m is not yet initialized, 20);*)
  107.         ASSERT(source # NIL, 21);
  108.         (*ASSERT(source is already initialized, 22);*)
  109.         ASSERT(Stores.SameType(m, source), 23);
  110.         WITH source: StdModel DO
  111.             (* perform deep copy of source *)
  112.         END
  113.     END CopyAllFrom;
  114.     (* StdDirectory *)
  115.     PROCEDURE (d: StdDirectory) New (): Model;
  116.         VAR m: StdModel;
  117.     BEGIN
  118.         NEW(m); (* initialize m *); RETURN m
  119.     END New;
  120.     (** miscellaneous **)
  121.     PROCEDURE New* (): Model;
  122.     BEGIN
  123.         RETURN dir.New()
  124.     END New;
  125.     PROCEDURE Clone* (source: Model): Model;
  126.         VAR st: Stores.Store; m: Model;
  127.     BEGIN
  128.         ASSERT(source # NIL, 20);
  129.         st := Stores.Clone(source); m := st(Model);
  130.         m.InitFrom(source);
  131.         RETURN m
  132.     END Clone;
  133.     PROCEDURE Copy* (source: Model): Model;
  134.         VAR st: Stores.Store; m: Model;
  135.     BEGIN
  136.         ASSERT(source # NIL, 20);
  137.         st := Stores.Clone(source); m := st(Model);
  138.         m.CopyAllFrom(source);
  139.         RETURN m
  140.     END Copy;
  141.     PROCEDURE SetDir* (d: Directory);
  142.     BEGIN
  143.         ASSERT(d # NIL, 20);
  144.         dir := d
  145.     END SetDir;
  146.     PROCEDURE Init;
  147.         VAR d: StdDirectory;
  148.     BEGIN
  149.         NEW(d); stdDir := d; dir := d
  150.     END Init;
  151. BEGIN
  152.     Init
  153. END NewModels.
  154. TextControllers.StdCtrlDesc
  155. TextControllers.ControllerDesc
  156. Containers.ControllerDesc
  157. Controllers.ControllerDesc
  158. TextRulers.StdRulerDesc
  159. TextRulers.RulerDesc
  160. TextRulers.StdStyleDesc
  161. TextRulers.StyleDesc
  162. TextRulers.AttributesDesc
  163. Helvetica
  164. Documents.ControllerDesc
  165.